package 构造方法.子类构造方法使用父类构造方法;
/*
    子类的构造方法中，可以使用父类构造方法
    示例代码：
    public Dog(){
        super();//子类空参构造访问父类空参构造
    }
    public Dog(String name,int age,String id){
        super(name,age,id);//子类全参构造访问父类全参构造
    }
 */
public class Test {
    public static void main(String[] args) {
        //测试Animal类构造方法
        Animal a=new Animal();
        System.out.println("名字为："+a.getName()+'\n'+"年龄为："+a.getAge()+'\n'+a.getId());
        System.out.println("--------------------------------");

        Animal b=new Animal("猫科动物",200,"编号为：100");
        System.out.println("名字为："+b.getName()+'\n'+"年龄为："+b.getAge()+'\n'+b.getId());
        System.out.println("--------------------------------");

        //测试Dog类构造方法
        Dog d=new Dog();
        System.out.println("名字为："+d.getName()+'\n'+"年龄为："+d.getAge()+'\n'+d.getId());
        System.out.println("--------------------------------");
        Dog f=new Dog("哈士奇",25,"编号为：10000");
        System.out.println("名字为："+f.getName()+'\n'+"年龄为："+f.getAge()+'\n'+f.getId());
        /*
        注：这里得不到想要输出的结果。是因为f全参对象虽然初始化成功了，但是输出的时候getXxx方法在Dog子类中重写了。
            根据继承类的成员方法访问原则：“就近原则“。优先访问Dpg本类成员方法与变量。
            但是Dog类的全参构造方法，是利用的父类构造方法来初始化对象的。(即利用Animal父类构造方法，给父类的成员变量进行了赋值)
            但子类的成员变量没有进行赋值，而这行代码输出的是子类成员变量的值。所以输出结果不对。
            （无参构造方法问题纯属巧合，实际也是有问题的，问题原因同上）
            这里可以使用多态解决这个问题.
         */
        System.out.println("--------------------------------");

        Animal g=new Dog("哈士奇",25,"编号为：10000");
        System.out.println("名字为："+g.name+'\n'+"年龄为："+g.age+'\n'+g.id);


    }
}
